/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package org.sapra.abc;



import java.util.List;
import nextapp.echo2.app.Alignment;
import nextapp.echo2.app.Button;
import nextapp.echo2.app.Color;
import nextapp.echo2.app.Column;
import nextapp.echo2.app.Extent;
import nextapp.echo2.app.Insets;
import nextapp.echo2.app.Row;
import nextapp.echo2.app.SelectField;
import nextapp.echo2.app.TextField;
import nextapp.echo2.app.WindowPane;
import nextapp.echo2.app.event.ActionListener;
import nextapp.echo2.app.event.ActionEvent;
import nextapp.echo2.app.list.DefaultListModel;
import nextapp.echo2.extras.app.AccordionPane;
import nextapp.echo2.extras.app.layout.AccordionPaneLayoutData;
import org.sapra.dao.Corporativo;
import org.sapra.dao.GpoEmpresas;
import org.sapra.echo.Helpers;
import org.sapra.echo.wAviso;
import org.sapra.main.vPrincipal;

/**
 *
 * @author cobain
 */
public class vGpoEmpresas extends nextapp.echo2.app.ContentPane{
    //OBJETOS INICALES
    Column mParent;
    vPrincipal princ;
    GpoEmpresas gpoEmp;
    Corporativo corp;
    public final static int EDITAR = 3;
    public final static int NUEVO = 1;
    public final static int BORRAR = 2;
    public static int accion;
    List<Corporativo> corp1;
    List<GpoEmpresas> gpos;

    //COMPONENTES
    private Button bNuevo;
    private Button bEditar;
    private Button bGuardar;
    private Button bCancelar;
    private Button bBorrar;
    private Button bConfirmar;
    private SelectField lista_gps;
    private TextField nom_gpo_empresas;
    private Row row5, row6, row7, row8, row9;
    private SelectField list_corp;
    private WindowPane ven;

    public vGpoEmpresas(vPrincipal princ) {
        super();
        this.princ=princ;
        initComponents();
    }

    public vGpoEmpresas(Column parent){
        mParent = parent;
        initComponents();
    }

    private void initComponents(){
         Column col1;


        if(mParent != null) col1 = mParent;
        else{
            col1 = Helpers.Column("Default", new Extent(5),this);
            Row x=princ.getMenu();
            x.setAlignment(Alignment.ALIGN_CENTER);
            col1.add(x);
        }
            //ENCABEZADO.
            Row row1=Helpers.Row("Default", new Extent(5), col1);
            Helpers.Label("GRUPO DE EMPRESAS Y ACCIONES", new Color(0x011dac), row1);
            row1.setAlignment(Alignment.ALIGN_CENTER);

            Row row2=Helpers.Row("Default", new Extent(5), col1);
            Helpers.Label("SELECCIONE", Color.BLACK, row2);
            row2.setAlignment(Alignment.ALIGN_CENTER);

            /*BOTONES DE ACCION.
            Row row3=Helpers.Row("Default", new Extent(10), col1);
            bNuevo=Helpers.Button("NUEVO", row3, new ActionListener(){public void actionPerformed(ActionEvent e) {menuNuevo(e);}});
            bEditar=Helpers.Button("EDITAR", row3, new ActionListener(){public void actionPerformed(ActionEvent e) {menuEditar(e);}});
            bBorrar=Helpers.Button("BORRAR", row3, new ActionListener(){public void actionPerformed(ActionEvent e) {menuBorrar(e);}});
            row3.setAlignment(Alignment.ALIGN_CENTER);*/


            //BOTONES DE ACCION
            bNuevo=Helpers.Button2("NUEVO",  new ActionListener(){public void actionPerformed(ActionEvent e) {menuNuevo(e);}});
            bEditar=Helpers.Button2("EDITAR", new ActionListener(){public void actionPerformed(ActionEvent e) {menuEditar(e);}});
            bBorrar=Helpers.Button2("BORRAR", new ActionListener(){public void actionPerformed(ActionEvent e) {menuBorrar(e);}});


          Column col_b=new Column();

           col_b.add(bNuevo);
           col_b.add(bEditar);
           col_b.add(bBorrar);

           col_b.setCellSpacing(new Extent(5));
           col_b.setInsets(new Insets(new Extent(10)));

           AccordionPane ac=new AccordionPane();
           AccordionPaneLayoutData layoutdata=new AccordionPaneLayoutData();
           layoutdata.setTitle("OPCIONES");

           col_b.setLayoutData(layoutdata);
           AccordionPaneLayoutData layoutData2 = new AccordionPaneLayoutData();
           ac.add(col_b);

          ven=Helpers.Window("MENU GPO EMPRESAS");
          ven.setHeight(new Extent(185));
          ven.setWidth(new Extent(185));
          ven.setPositionY(new Extent(60));
          ven.setPositionX(new Extent(60));
          ven.setClosable(false);
          ven.setMovable(false);
          ven.add(ac);
          add(ven);


            //CAMPOS DE DATOS.
            row5=Helpers.Row("Default", new Extent(5), col1);
            //lista_gps=Helpers.ListBox(row5, new ActionListener(){public void actionPerformed(ActionEvent e) {Seleccion(e);}});
            lista_gps=new SelectField();
            lista_gps.setWidth(new Extent(450));
            row5.add(lista_gps);
            row5.setAlignment(Alignment.ALIGN_CENTER);

            row6=Helpers.Row("Default", new Extent(5), col1);
            Helpers.Label("NOMBRE DEL GRUPO DE EMPRESAS", Color.BLACK, row6);
            nom_gpo_empresas=Helpers.Text("", row6);
            row6.setAlignment(Alignment.ALIGN_CENTER);

            row7=Helpers.Row("Default", new Extent(5), col1);
            Helpers.Label("SELECCIONE UN CORPORATIVO", Color.BLACK, row7);
            list_corp=new SelectField();
            row7.add(list_corp);
            row7.setAlignment(Alignment.ALIGN_CENTER);

            row8=Helpers.Row("Default", new Extent(5), col1);
            bGuardar=Helpers.Button("GUARDAR", row8, new ActionListener(){public void actionPerformed(ActionEvent e) {menuGuardar(e);}});
            bCancelar=Helpers.Button("CANCELAR", row8, new ActionListener(){public void actionPerformed(ActionEvent e) {menuCancelar(e);}});
            row8.setAlignment(Alignment.ALIGN_CENTER);

            row9=Helpers.Row("Default", new Extent(5), col1);
            bConfirmar=Helpers.Button("CONFIRMAR BORRAR", row9, new ActionListener(){public void actionPerformed(ActionEvent e) {confirmarBorrar(e);}});
            bCancelar=Helpers.Button("CANCELAR", row9, new ActionListener(){public void actionPerformed(ActionEvent e) {menuCancelar(e);}});
            row9.setAlignment(Alignment.ALIGN_CENTER);

            FirstTime();

    }

    void FirstTime(){

        UpdateView();

       }

        //ACTUALIZAR LA LISTA
        void UpdateView(){
        corp1 = dCorporativo.getCorporativo(0,null);
        list_corp.setModel(new DefaultListModel(corp1.toArray()));
        list_corp.setEnabled(true);
        gpos = dGpoEmpresas.getGpoEmp(0,null);
        //gpos = dEmpresa.getGpoEmpresas();
        lista_gps.setModel(new DefaultListModel(gpos.toArray()));

        //row4.setVisible(false);
        row5.setVisible(false);
        row6.setVisible(false);
        row7.setVisible(false);
        row8.setVisible(false);
        row9.setVisible(false);

        corp=null;
        gpoEmp=null;

       }

        void Seleccion(ActionEvent e){
        gpoEmp=(GpoEmpresas) lista_gps.getSelectedItem();
        corp=(Corporativo) list_corp.getSelectedItem();

       }

       //ACCIONES DE LOS BOTONES.
        void menuNuevo(ActionEvent e){
            row6.setVisible(true);
            row7.setVisible(true);
            row8.setVisible(true);
            CleanFields();
            accion=NUEVO;

        }

        void menuEditar(ActionEvent e){
        //row4.setVisible(true);
        row5.setVisible(true);
        row6.setVisible(true);
        //row7.setVisible(true);
        row8.setVisible(true);
        accion=EDITAR;
        }

        void menuGuardar(ActionEvent e){

         String msj=null;
        msj=Validar();
        if(msj!=null){
             add(new wAviso("Error", msj));
             return ;
            }
             if(accion==NUEVO){
                 int eid=0;
                 String nombre=nom_gpo_empresas.getText();
                 corp=(Corporativo)list_corp.getSelectedItem();
                 eid=dGpoEmpresas.Nuevo(nombre, corp);

                 if( eid <= 0){
                        //Error al guardar al usuario
                        add(new wAviso("ERROR","ERROR AL GUARDAR GRUPO"));
                        return;
                    }
                    else{
                     add(new wAviso("Exito!!!","GRUPO AGREGADO CORRECTAMENTE"));
                    }

                 UpdateView();

             }

             if(accion==EDITAR){
                 int eid=0;
                gpoEmp=(GpoEmpresas) lista_gps.getSelectedItem();
                String nombre=nom_gpo_empresas.getText();
                eid=dGpoEmpresas.editarGpoEmpresas(nombre, gpoEmp);
                if( eid <= 0){
                        //Error al guardar al usuario
                        add(new wAviso("ERROR","ERROR AL EDITAR GRUPO"));
                        return;
                    }else{
                     add(new wAviso("Exito!!!","GRUPO MODIFICADO CORRECTAMENTE"));
                    }
            UpdateView();
             }
        }

        void menuBorrar(ActionEvent e){
        row5.setVisible(true);
        row9.setVisible(true);
        accion=BORRAR;

        }

        void menuCancelar(ActionEvent e){

            ocultarFilas();

        }

        public void confirmarBorrar(ActionEvent e){
            gpoEmp = (GpoEmpresas) lista_gps.getSelectedItem();
        if(gpoEmp == null)return;
        int res=dGpoEmpresas.Delete(gpoEmp);
        if ( res <= 0){
            add(new wAviso("ERROR","NO SE PUEDE BORRAR GRUPO"));
        }
            else{
                     add(new wAviso("EXITO","GRUPO DE EMPRESAS BORRADO CORRECTAMENTE"));
                    }
        UpdateView();

        }

        //METODOS DE PRESENTACION.
        public void CleanFields(){
            nom_gpo_empresas.setText("");
            list_corp.setSelectedIndex(0);
            lista_gps.setSelectedIndex(0);
        }

        public void ocultarFilas(){
                        if(accion==NUEVO){
            row6.setVisible(false);
            row7.setVisible(false);
            row5.setVisible(false);
            row8.setVisible(false);
            }
            if(accion==EDITAR){
        row5.setVisible(false);
        row6.setVisible(false);
        row7.setVisible(false);
        row8.setVisible(false);
            }
            if(accion==BORRAR){
        row5.setVisible(false);
        row9.setVisible(false);

            }
        }

        private String Validar(){

        String msj1="Formato Erroneo para ";
        String msj3="Favor de Llenar el campo";
        boolean b,c;
        b=isNumeric(nom_gpo_empresas.getText());
        if(nom_gpo_empresas.getText().trim().equals(""))return msj3+" NOMBRE";
        if(b==true)return msj1+" NOMBRE";
        /*if(accion==NUEVO){
          List<GpoEmpresas> list=dGpoEmpresas.getGpoEmp(1, nom_gpo_empresas.getText().trim());
              if(list.size()>0)return " YA EXISTE ESE NOMBRE DEL GRUPO";
         }*/
            return null;
        }

        //VALIDAR CADENA DEL CAMPO DE TEXTO
         private  boolean isNumeric(String cadena){
         cadena=nom_gpo_empresas.getText();
         try {
              Integer.parseInt(cadena);
              return true;
             }
         catch (NumberFormatException nfe)
         {
           return false;

         }

      }
       /*private boolean validarNombre(String cadena){
             //cadena=nom_universidad.getText();
             List<Universidad> univs2= dUniversidad.getUniversidades();
             for(int i=0;i<univs2.size();i++)
             {
                 if(univs.get(i).toString().equals(cadena));
                 return true;
             }
             return false;
         }*/


}